// 创建日期对象，获得当前系统时间
let date = new Date('1990-12-09 18:35:47:100')
console.log(date) // Wed Sep 28 2022 16:57:59 GMT+0800 (中国标准时间)
// 获得毫秒数 getTime() 从1970-1-1 8:00:00 到现在经历的毫秒数
let time = date.getTime()
console.log(time) // 1664355015722
// 获得年 getFullYear()
let year = date.getFullYear()
console.log(year) // 2022
// 获得月 getMonth() 月份是从0开始
let month = date.getMonth()
console.log(month) // 8代表9月份
// 获得月中的天
let day = date.getDate()
console.log(day) // 28
// 获得小时
let hour = date.getHours()
console.log(hour) // 16
// 获得分钟
let mins = date.getMinutes()
console.log(mins) // 56
// 获得秒
let sec = date.getSeconds()
console.log(sec)
// 获得毫秒
let miliSec = date.getMilliseconds()
console.log(miliSec) // 89

// 日期格式化
let formatDate = (v) => {
  let date = new Date(v)
  // 优化日期构造过程
  if (Number.isNaN(Number(date))) {
    date = new Date()
  }
  let y = date.getFullYear()
  let M = date.getMonth() + 1
  let d = date.getDate()
  let h = date.getHours()
  let m = date.getMinutes()
  let s = date.getSeconds()
  M = padStart(M)
  d = padStart(d)
  h = padStart(h)
  m = padStart(m)
  s = padStart(s)
  return [y, M, d].join('-') + ' ' + [h, m, s].join(':') + ':' + date.getMilliseconds()
}

// 在<10数字前加'0'
function padStart(v) {
  v = parseInt(v)
  if (isNaN(v)) {
    // 抛出异常，终止程序
    throw '参数必须是数字'
  }
  if (v >= 0 && v < 10) {
    return '0' + v
  }
  return v + ''
}
let rt = formatDate('2022-08-28 12:57:59')
console.log(rt) // 2022-09-28 16:57:59

// Date的set方法
// 10天后是那一天
let date1 = new Date()
let dateOfMonth = date1.getDate()
// 此时日期是10天后的日期对象
date1.setDate(dateOfMonth + 10)
// 周中的某天
console.log(date1.getDate(), date1.getMonth() + 1, date1.getDay())
